home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Celestin Apprentice 5
/
Apprentice-Release5.iso
/
Source Code
/
By the Book
/
Learn C++ (CodeWarrior)
/
Chap 08.03 - overload
/
overload.cp
< prev
next >
Wrap
Text File
|
1995-10-21
|
1KB
|
90 lines
#include <iostream.h>
#include <fstream.h>
#include <string.h>
const short kMaxNameLength = 40;
//--------------------------------------- MenuItem
class MenuItem
{
private:
float price;
char name[ kMaxNameLength ];
public:
void SetName( char *itemName );
char *GetName();
void SetPrice( float itemPrice );
float GetPrice();
};
// I added these two prototypes. They should have been here
// in the first place... -- Dave Mark 10/20/95
istream &operator>>( istream &is, MenuItem &item );
ostream &operator<<( ostream &os, MenuItem &item );
void MenuItem::SetName( char *itemName )
{
strcpy( name, itemName );
}
char *MenuItem::GetName()
{
return( name );
}
void MenuItem::SetPrice( float itemPrice )
{
price = itemPrice;
}
float MenuItem::GetPrice()
{
return( price );
}
//-------------------------- iostream operators
istream &operator>>( istream &is, MenuItem &item )
{
float itemPrice;
char itemName[ kMaxNameLength ];
is.getline( itemName, kMaxNameLength );
item.SetName( itemName );
is >> itemPrice;
item.SetPrice( itemPrice );
is.ignore( 1, '\n' );
return( is );
}
ostream &operator<<( ostream &os, MenuItem &item )
{
os << item.GetName() << " ($"
<< item.GetPrice() << ") ";
return( os );
}
//--------------------------------------- main()
int main()
{
ifstream readMe( "Menu Items" );
MenuItem item;
while ( readMe >> item )
cout << item << "\n";
return 0;
}